Apache HTTP Server
設定方針 *Order、Override、Optionsは、デフォルトはすべてを禁止する。必要なものだけ許可する。 *不要なモジュールはロードしない。 *通信経路は暗号化する。 *ベーシック認証ではなく、ダイジェスト認証を使用する。 *KeepAliveは使用しない。Onの場合、KeepAliveTimeOut待ちでリソースを無駄に消費するため。 統計情報 *Apacheプロセスの統計情報を取得する。 *Webalizerでアクセスログ解析をする。 *.htaccessを使用しない。理由は構成ファイルを一か所に纏め保守性を向上させる。 チューニング ;初期設定はデフォルト設定を行う。性能テストでapacheの統計情報を取得しチューニングを行う。 suexec suexecは必要かも バーチャルホストやユーザディレクトリを使う場合、suexecを使うとよいかも たとえば、ユーザディレクトリでsuexecするとユーザの権限でしかcgiを実行できない。 httpd 2.2.3 インストール yum install -y httpd chkconfig httpd on /etc/httpd/conf/httpd.conf ServerTokens Prod ServerRoot "/etc/httpd" PidFile run/httpd.pid Timeout 60 KeepAlive Off MaxKeepAliveRequests 100 KeepAliveTimeout 2 StartServers 8 MinSpareServers 5 MaxSpareServers 20 ServerLimit 256 MaxClients 256 MaxRequestsPerChild 4000 Listen 80 LoadModule auth_basic_module modules/mod_auth_basic.so LoadModule auth_digest_module modules/mod_auth_digest.so LoadModule authn_file_module modules/mod_authn_file.so #LoadModule authn_alias_module modules/mod_authn_alias.so #LoadModule authn_anon_module modules/mod_authn_anon.so #LoadModule authn_dbm_module modules/mod_authn_dbm.so LoadModule authn_default_module modules/mod_authn_default.so LoadModule authz_host_module modules/mod_authz_host.so LoadModule authz_user_module modules/mod_authz_user.so #LoadModule authz_owner_module modules/mod_authz_owner.so LoadModule authz_groupfile_module modules/mod_authz_groupfile.so #LoadModule authz_dbm_module modules/mod_authz_dbm.so LoadModule authz_default_module modules/mod_authz_default.so #LoadModule ldap_module modules/mod_ldap.so #LoadModule authnz_ldap_module modules/mod_authnz_ldap.so #LoadModule include_module modules/mod_include.so LoadModule log_config_module modules/mod_log_config.so #LoadModule logio_module modules/mod_logio.so #LoadModule env_module modules/mod_env.so #LoadModule ext_filter_module modules/mod_ext_filter.so #LoadModule mime_magic_module modules/mod_mime_magic.so #LoadModule expires_module modules/mod_expires.so #LoadModule deflate_module modules/mod_deflate.so #LoadModule headers_module modules/mod_headers.so #LoadModule usertrack_module modules/mod_usertrack.so LoadModule setenvif_module modules/mod_setenvif.so LoadModule mime_module modules/mod_mime.so #LoadModule dav_module modules/mod_dav.so LoadModule status_module modules/mod_status.so #LoadModule autoindex_module modules/mod_autoindex.so LoadModule info_module modules/mod_info.so #LoadModule dav_fs_module modules/mod_dav_fs.so #LoadModule vhost_alias_module modules/mod_vhost_alias.so #LoadModule negotiation_module modules/mod_negotiation.so LoadModule dir_module modules/mod_dir.so #LoadModule actions_module modules/mod_actions.so #LoadModule speling_module modules/mod_speling.so #LoadModule userdir_module modules/mod_userdir.so LoadModule alias_module modules/mod_alias.so #LoadModule substitute_module modules/mod_substitute.so #LoadModule rewrite_module modules/mod_rewrite.so #LoadModule proxy_module modules/mod_proxy.so #LoadModule proxy_balancer_module modules/mod_proxy_balancer.so #LoadModule proxy_ftp_module modules/mod_proxy_ftp.so #LoadModule proxy_http_module modules/mod_proxy_http.so #LoadModule proxy_ajp_module modules/mod_proxy_ajp.so #LoadModule proxy_connect_module modules/mod_proxy_connect.so #LoadModule cache_module modules/mod_cache.so #LoadModule suexec_module modules/mod_suexec.so #LoadModule disk_cache_module modules/mod_disk_cache.so #LoadModule cgi_module modules/mod_cgi.so #LoadModule version_module modules/mod_version.so Include conf.d/*.conf ExtendedStatus On User apache Group apache ServerAdmin root@localhost UseCanonicalName Off DocumentRoot "/var/www/html" Options none AllowOverride None Order Allow,Deny Options FollowSymLinks AllowOverride None Order allow,deny Order allow,deny Allow from all # # UserDir disabled # #UserDir public_html # DirectoryIndex index.html AccessFileName .htaccess Order allow,deny Deny from all Satisfy All TypesConfig /etc/mime.types DefaultType text/plain ## # MIMEMagicFile conf/magic# ## HostnameLookups Off ErrorLog logs/error_log LogLevel warn LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common LogFormat "%{Referer}i -> %U" referer LogFormat "%{User-agent}i" agent CustomLog logs/access_log combined ServerSignature Off #Alias /icons/ "/var/www/icons/" # # Options Indexes MultiViews FollowSymLinks # AllowOverride None # Order allow,deny # Allow from all # # # DAVLockDB /var/lib/dav/lockdb # ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" AllowOverride None Options None Order allow,deny Order allow,deny Allow from all #IndexOptions FancyIndexing VersionSort NameWidth=* HTMLTable Charset=UTF-8 #AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip #AddIconByType (TXT,/icons/text.gif) text/* #AddIconByType (IMG,/icons/image2.gif) image/* #AddIconByType (SND,/icons/sound2.gif) audio/* #AddIconByType (VID,/icons/movie.gif) video/* #AddIcon /icons/binary.gif .bin .exe #AddIcon /icons/binhex.gif .hqx #AddIcon /icons/tar.gif .tar #AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv #AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip #AddIcon /icons/a.gif .ps .ai .eps #AddIcon /icons/layout.gif .html .shtml .htm .pdf #AddIcon /icons/text.gif .txt #AddIcon /icons/c.gif .c #AddIcon /icons/p.gif .pl .py #AddIcon /icons/f.gif .for #AddIcon /icons/dvi.gif .dvi #AddIcon /icons/uuencoded.gif .uu #AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl #AddIcon /icons/tex.gif .tex #AddIcon /icons/bomb.gif core #AddIcon /icons/back.gif .. #AddIcon /icons/hand.right.gif README #AddIcon /icons/folder.gif ^^DIRECTORY^^ #AddIcon /icons/blank.gif ^^BLANKICON^^ #DefaultIcon /icons/unknown.gif #ReadmeName README.html #HeaderName HEADER.html #IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t #AddLanguage ca .ca #AddLanguage cs .cz .cs #AddLanguage da .dk #AddLanguage de .de #AddLanguage el .el #AddLanguage en .en #AddLanguage eo .eo #AddLanguage es .es #AddLanguage et .et #AddLanguage fr .fr #AddLanguage he .he #AddLanguage hr .hr #AddLanguage it .it #AddLanguage ja .ja #AddLanguage ko .ko #AddLanguage ltz .ltz #AddLanguage nl .nl #AddLanguage nn .nn #AddLanguage no .no #AddLanguage pl .po #AddLanguage pt .pt #AddLanguage pt-BR .pt-br #AddLanguage ru .ru #AddLanguage sv .sv #AddLanguage zh-CN .zh-cn #AddLanguage zh-TW .zh-tw #LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW #ForceLanguagePriority Prefer Fallback #AddDefaultCharset UTF-8 AddType application/x-compress .Z AddType application/x-gzip .gz .tgz AddType application/x-x509-ca-cert .crt AddType application/x-pkcs7-crl .crl #AddHandler type-map var #AddType text/html .shtml #AddOutputFilter INCLUDES .shtml #Alias /error/ "/var/www/error/" # # # # AllowOverride None # Options IncludesNoExec # AddOutputFilter Includes html # AddHandler type-map var # Order allow,deny # Allow from all # LanguagePriority en es de fr # ForceLanguagePriority Prefer Fallback # # # BrowserMatch "Mozilla/2" nokeepalive BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0 BrowserMatch "RealPlayer 4\.0" force-response-1.0 BrowserMatch "Java/1\.0" force-response-1.0 BrowserMatch "JDK/1\.0" force-response-1.0 BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully BrowserMatch "MS FrontPage" redirect-carefully BrowserMatch "^WebDrive" redirect-carefully BrowserMatch "^WebDAVFS/1.0123" redirect-carefully BrowserMatch "^gnome-vfs/1.0" redirect-carefully BrowserMatch "^XML Spy" redirect-carefully BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully SetHandler server-status Order Allow,Deny Allow from 127.0.0.1 SetHandler server-info Order Allow,Deny Allow from 127.0.0.1 SSL *NameVirtualHostはSSLを1サイトしか構成できない。SSL経路を確立する前にサイト名を確認する必要があるため。 *NameVirtualHostをするならデフォルトのAlias、ScriptAliasのアクセス制御は無効にする？ *RHEL 6からNameVirtualHostでSSL可能。SNI LDAP+BASIC認証 AuthName "username?" AuthType Basic AuthBasicProvider ldap AuthLDAPURL "ldap://localhost/dc=example,dc=com?uid?" AuthLDAPGroupAttributeIsDN off AuthLDAPGroupAttribute memberUid require ldap-group cn=webuser,ou=Group,dc=example,dc=com selinux *httpd_sys_content_t httpd_sys_script_exec_tとdaemonに読み込み可能。 *httpd_sys_script_exec_t cgiスクリプトからすべてのsysにアクセス可。 *httpd_sys_rw_content_t httpd_sys_script_exec_tとdaemonにrw可能 *httpd_sys_content_ra_t httpd_sys_script_exec_tとdaemonにreadとappend可能 *httpd_unconfined_script_exec_t unconfined!!でスクリプトを実行する。 *public_content_t *public_content_rw_t *80番ポート以外にプロキシ転送する。http_can_network_relay on 統計情報 muninで統計情報を取得する。 リバースプロキシを経由した場合、アクセス元IPアドレスの制御を行う プロキシ側で以下のヘッダを追加する設定を行う。 X-Forwarded-for アクセス制御を行う場合 SetEnvIf X-Forwarded-For "192\.168\.0\.0-9{1,3}" abc-net Order Allow,Deny Allow from env=abc-net 外部リンク *Apache HTTP Server *Apache HTTP Server - Wikipedia *Hacking Apache HTTP Server at Yahoo! トラブルシューティング CGIが実行できない *スクリプトのソースが表示される。 : →モジュールはロードされているか？ LoadModule cgi_module modules/mod_cgi.so : →ハンドラは登録されているか？ AddHandler cgi-script .cgi Category:Linux